Many modern integrated circuits contain at least one domain whose mode of operation is configured by means of a set of registers. The registers are memory units accessible directly to the domain, each of which holds a data bit whose state indicates or helps to indicate the configuration state of the domain. For example, one domain on an integrated circuit might implement a UART (universal asynchronous receiver/transmitter). Registers accessible to the UART could indicate aspects of its configuration such as Baud rate, number of data bits, number of stop bits and parity protocol. When the UART is in operation it acts in accordance with those registers. More complex integrated circuits may have multiple domains, each with their own configuration registers.
Power consumption is a major concern in integrated circuit design. To reduce the power that an integrated circuit consumes, it is common to allow one or more domains of the integrated circuit to be powered down from time to time whilst other parts of the integrated circuit remain operational. For example, in an integrated circuit whose domains are a microprocessor, a UART and a radio transceiver, the UART could be powered down whilst the microprocessor and the radio transceiver remain operational. Then the UART could be reactivated when it is required for use.
When a domain is powered back up it can be desirable for it to return to operation in the same state as it was when it was powered down. This avoids the need to re-establish its state by performing some computation or by negotiating with other components. Since the domain's state is held in its registers, and those are part of the domain, the state of those registers is lost when the domain is powered down. Therefore, when the domain is being powered down it is normal to store the state of each of the domain's registers in an individual corresponding memory cell outside the domain. Then when the domain is powered back up its registers can be repopulated based on the state of that external memory.
This arrangement has a number of problems.
First, each of the external memory cells will to some extent leak energy when it is storing data. This leakage is not significant when the integrated circuit is built on a relatively large-scale geometry, but at smaller geometries the leakage can be greater and can significantly reduce the power savings that can be had from turning a domain off. This is expected to be particularly significant in future designs of integrated circuit that might implement much higher numbers of power domains than are common at present.
Second, it can take a significant time to read each of the external memory cells and store their contents in the registers of the domain. This can delay the domain's availability for use, or require it to be powered up well before it is to be used. This impacts the power savings from turning the domain off.
It would be desirable to have an improved way of retaining and restoring the state of a domain on an integrated circuit.